Full source code giải đố hình đơn giản
16.652 lượt xem;
- LevelLocker.cs
- Puzzle Level Controller Scripts /
- Scripts /
- Assets /
- project /
1 using UnityEngine;
2 using System.Collections;
3
4 public class LevelLocker : MonoBehaviour {
5
6 [SerializeField]
7 private PuzzleGameSaver puzzleGameSaver;
8
9 [SerializeField]
10 private StarsLocker starsLocker;
11
12 [SerializeField]
13 private GameObject[] levelStarsHolders;
14
15 [SerializeField]
16 private GameObject[] levelsPadlocks;
17
18 private bool[] candyPuzzleLevels;
19 private bool[] transportPuzzleLevels;
20 private bool[] shapePuzzleLevels;
21
22 void Awake() {
23 DeactivatePadlocksAndStarHolders ();
24 }
25
26 void Start () {
27 GetLevels ();
28 }
29
30 public void CheckWhichLevelsAreUnlocked(string selectedPuzzle) {
31
32 DeactivatePadlocksAndStarHolders ();
33 GetLevels ();
34
35 switch (selectedPuzzle) {
36
37 case "Candy Puzzle":
38
39 for(int i = 0; i < candyPuzzleLevels.Length; i++) {
40 if(candyPuzzleLevels[i]) {
41 levelStarsHolders[i].SetActive(true);
42 starsLocker.ActivateStars(i, selectedPuzzle);
43 } else {
44 levelsPadlocks[i].SetActive(true);
45 }
46 }
47
48 break;
49
50 case "Transport Puzzle":
51
52 for(int i = 0; i < transportPuzzleLevels.Length; i++) {
53 if(transportPuzzleLevels[i]) {
54 levelStarsHolders[i].SetActive(true);
55 starsLocker.ActivateStars(i, selectedPuzzle);
56 }
57 else {
58 levelsPadlocks[i].SetActive(true);
59 }
60 }
61
62 break;
63
64 case "Shape Puzzle":
65
66 for(int i = 0; i < shapePuzzleLevels.Length; i++) {
67 if(shapePuzzleLevels[i]) {
68 levelStarsHolders[i].SetActive(true);
69 starsLocker.ActivateStars(i, selectedPuzzle);
70 } else {
71 levelsPadlocks[i].SetActive(true);
72 }
73 }
74
75 break;
76
77
78 }
79
80 }
81
82 void DeactivatePadlocksAndStarHolders() {
83 for(int i = 0; i < levelStarsHolders.Length; i++) {
84 levelStarsHolders[i].SetActive(false);
85 levelsPadlocks[i].SetActive(false);
86 }
87 }
88
89 void GetLevels() {
90 candyPuzzleLevels = puzzleGameSaver.candyPuzzleLevels;
91 transportPuzzleLevels = puzzleGameSaver.transportPuzzleLevels;
92 shapePuzzleLevels = puzzleGameSaver.shapePuzzleLevels;
93 }
94
95 public bool[] GetPuzzleLevels(string selectedPuzzle) {
96
97 switch (selectedPuzzle) {
98
99 case "Candy Puzzle":
100 return this.candyPuzzleLevels;
101 break;
102
103 case "Transport Puzzle":
104 return this.transportPuzzleLevels;
105 break;
106
107 case "Shape Puzzle":
108 return this.shapePuzzleLevels;
109 break;
110
111 default:
112 return null;
113 break;
114
115 }
116
117 }
118
119 } // LevelLocker
2 using System.Collections;
3
4 public class LevelLocker : MonoBehaviour {
5
6 [SerializeField]
7 private PuzzleGameSaver puzzleGameSaver;
8
9 [SerializeField]
10 private StarsLocker starsLocker;
11
12 [SerializeField]
13 private GameObject[] levelStarsHolders;
14
15 [SerializeField]
16 private GameObject[] levelsPadlocks;
17
18 private bool[] candyPuzzleLevels;
19 private bool[] transportPuzzleLevels;
20 private bool[] shapePuzzleLevels;
21
22 void Awake() {
23 DeactivatePadlocksAndStarHolders ();
24 }
25
26 void Start () {
27 GetLevels ();
28 }
29
30 public void CheckWhichLevelsAreUnlocked(string selectedPuzzle) {
31
32 DeactivatePadlocksAndStarHolders ();
33 GetLevels ();
34
35 switch (selectedPuzzle) {
36
37 case "Candy Puzzle":
38
39 for(int i = 0; i < candyPuzzleLevels.Length; i++) {
40 if(candyPuzzleLevels[i]) {
41 levelStarsHolders[i].SetActive(true);
42 starsLocker.ActivateStars(i, selectedPuzzle);
43 } else {
44 levelsPadlocks[i].SetActive(true);
45 }
46 }
47
48 break;
49
50 case "Transport Puzzle":
51
52 for(int i = 0; i < transportPuzzleLevels.Length; i++) {
53 if(transportPuzzleLevels[i]) {
54 levelStarsHolders[i].SetActive(true);
55 starsLocker.ActivateStars(i, selectedPuzzle);
56 }
57 else {
58 levelsPadlocks[i].SetActive(true);
59 }
60 }
61
62 break;
63
64 case "Shape Puzzle":
65
66 for(int i = 0; i < shapePuzzleLevels.Length; i++) {
67 if(shapePuzzleLevels[i]) {
68 levelStarsHolders[i].SetActive(true);
69 starsLocker.ActivateStars(i, selectedPuzzle);
70 } else {
71 levelsPadlocks[i].SetActive(true);
72 }
73 }
74
75 break;
76
77
78 }
79
80 }
81
82 void DeactivatePadlocksAndStarHolders() {
83 for(int i = 0; i < levelStarsHolders.Length; i++) {
84 levelStarsHolders[i].SetActive(false);
85 levelsPadlocks[i].SetActive(false);
86 }
87 }
88
89 void GetLevels() {
90 candyPuzzleLevels = puzzleGameSaver.candyPuzzleLevels;
91 transportPuzzleLevels = puzzleGameSaver.transportPuzzleLevels;
92 shapePuzzleLevels = puzzleGameSaver.shapePuzzleLevels;
93 }
94
95 public bool[] GetPuzzleLevels(string selectedPuzzle) {
96
97 switch (selectedPuzzle) {
98
99 case "Candy Puzzle":
100 return this.candyPuzzleLevels;
101 break;
102
103 case "Transport Puzzle":
104 return this.transportPuzzleLevels;
105 break;
106
107 case "Shape Puzzle":
108 return this.shapePuzzleLevels;
109 break;
110
111 default:
112 return null;
113 break;
114
115 }
116
117 }
118
119 } // LevelLocker